#ifndef _LINKED_LIST_H_
#define _LINKED_LIST_H_

#include <iostream>
typedef int DataType;

struct Node
{
	Node( DataType value, Node *_pNext = NULL )
		: data( value ), pNext( _pNext )
	{
	}

	DataType data;
	Node *pNext;
};

class LinkedList
{
public:

	LinkedList( void );

	LinkedList( Node *pNode );

	~LinkedList( void );

	void AddNode( Node *pNode );

	void AddNode( DataType value );

	Node * GetTopNode( void ) const;

	void RemoveTopNode( void );

	void ClearList( void );

	const int GetSize( void ) const { return size; }

private:

	Node *m_pTopNode;
	int size;

};

#endif /* _LINKED_LIST_H_ */